/**
  给你一个 32 位的有符号整数 x ，返回将 x 中的数字部分反转后的结果。

	如果反转后整数超过 32 位的有符号整数的范围 [−2^31, 2^31− 1] ，就返回 0。

	假设环境不允许存储 64 位整数（有符号或无符号）。

	示例 1：

	输入：x = 123
	输出：321
	示例 2：

	输入：x = -123
	输出：-321
	示例 3：

	输入：x = 120
	输出：21
	示例 4：

	输入：x = 0
	输出：0
 *
 */
import {MAX_NUMBER, MIN_NUMBER} from "../enums";

/**
 * 暴力解析，将数字转换为字符串，拆解，反转，拼接，转换成数字返回
 * @param x {number} 传进来的函数
 * @return {number}
 */
const reverse = function(x) {
	//  判断传进来的数字是正数还是负数，最终需要传递出去
	const numbSymbol = x < 0 ? -1 : 1;

	// 对数字进行处理
	const reverseNumb = Number.prototype
		.toString
		.call(Math.abs(x))// 取绝对值并转换成string
		.split('')
		.reverse() // 反转
		.join('') // 再连接
		* numbSymbol; // 乘上正负号，并转成数字类型

	if (
		reverseNumb > MAX_NUMBER ||
		reverseNumb < MIN_NUMBER
	) {
		return 0;
	}

	return reverseNumb;
}
